Often content, such as files and directories, in computer systems are remotely stored on one or more data storage devices. Multiple protocols, such as NFS and CIFS protocols, are used by these computer systems to access this content stored on these data storage devices.
Virtualization devices manage and present content stored on a plurality of data storage devices as a single, unified file system. Basically, these virtualization devices decouple the presentation of content from the actual physical location of the content to provide a single unified file system. Additionally, these virtualization devices rely on the ability to migrate data between different data storage devices as appropriate and desired for the particular application.
Unfortunately, this multi-protocol mode which these virtualization devices accommodate presents a number of challenges. More specifically, the CIFS protocol is unable to represent many NFS filenames. For example, certain characters, such as the colon “:” can not be used in CIFS names. As a result, virtualization devices can not produce a file generated name for some NFS filenames.
Additionally, CIFS typically is incapable of representing two files with names that differ only in their capitalization. When an NFS device creates a name that can not be represented in CIFS, the data storage system creates a special CIFS name for the file. Unfortunately, these filer-generated names (FGN) can match an already existing name of a file or directory resulting in a collision. If this occurs, when the virtualization device moves the content, such as a file or directory, between data storage devices, the content can be overwritten and lost.